2、Mysql的编译安装,解决各种常见的报错,超级详细 您所在的位置:网站首页 cmake 编译 安装 2、Mysql的编译安装,解决各种常见的报错,超级详细

2、Mysql的编译安装,解决各种常见的报错,超级详细

2023-09-09 01:06| 来源: 网络整理| 查看: 265

这里写目录标题 1、环境介绍2、检查冲突3、安装依赖4、准备用户和组5、下载源码包6、开始编译7、编译完成后安装8、目录授权9、安全初始化10、修改配置文件11、环境变量12、传统方式启动13、制作服务启动14、密码修改开启远程访问

1、环境介绍

当前环境是虚拟机中最小化安装的Centos7, 防火墙开启状态。 安装Mysql5.5.62仅用于学习

[root@localhost MySQL-5.5.62]# uname -a Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux [root@localhost MySQL-5.5.62]# cat /etc/centos-release CentOS Linux release 7.7.1908 (Core) [root@localhost MySQL-5.5.62]# 2、检查冲突

查看是否存在mariadb 、旧的mysql

rpm -qa | grep mariadb rpm -qa | grep mysql rpm -e --nodeps 包全名 存在/etc/my.cnf,则需要先删除 3、安装依赖 yum -y install make gcc-c++ cmake bison-devel ncurses-devel perl openssl-devel autoconf mysql5.5之后需要用cmake支持编译安装openssl-devel 编译时需要,要不然会报错autoconf 此包安装时会安装Data:Dumper模块 , 数据库初始化 时需要Dumpe 4、准备用户和组 groupadd mysql useradd mysql -g mysql -M -s /sbin/nologin 5、下载源码包 wget https://gitee.com/spokes/mysql/blob/master/mysql-5.6.46.tar.gz tar -zxvf mysql-5.6.46.tar cd mysql5.6.46 6、开始编译 cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DSYSCONFDIR=/etc \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \ -DMYSQL_TCP_PORT=3306 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci

我在这里编译时报错:

CMake Error at cmake/ssl.cmake:66 (MESSAGE): Please install the appropriate openssl developer package. Call Stack (most recent call first): cmake/ssl.cmake:260 (FATAL_SSL_NOT_FOUND_ERROR) CMakeLists.txt:482 (MYSQL_CHECK_SSL)

出现这个原因时:需要安装openssl-devel 这个依赖

#如果需要重新编译还需要删除CMakeCache.txt才能重新编译。

rm -rf CMakeCache.txt 7、编译完成后安装 make && make install

时间约20分钟

8、目录授权 chown mysql:mysql /usr/local/mysql 9、安全初始化

此处注意执行脚本的方式和初始化参数的正确性,不然会造成初始化的不成功,不会创建mysql库。注意仔细看初始化的成功提示。

cd /usr/local/mysql ./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data

报错:

FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db: Data::Dumper

查阅资料,解决方法如下:安装autoconf库 yum -y install autoconf #此包安装时会安装Data:Dumper模块

安装完成后,再次运行上面脚本命令成功

10、修改配置文件

配置前先必须从解压的源码包目录内拷贝配置文件到etc目录下,my.cnf是mysql的主配置文件

cp support-files/my-default.cnf /etc/my.cnf vim /etc/my.cnf [mysqld] 添加: datadir=/usr/local/mysql/data default-storage-engine=InnoDB lower_case_table_names=1 11、环境变量 vim /root/.bash_profile 更改PATH=$PATH:$HOME/bin为: 在默认的变量冒号后面添加下面两个路径: /usr/local/mysql/bin /usr/local/mysql/lib 最终效果: PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/mysql/lib

刷新配置

source /root/.bash_profile #使刚才的修改生效 12、传统方式启动 bin/mysqld_safe --user=mysql &

报错1:

运行上面63行命令遇到问题:-bash: mysqld_safe: command not found

查找到的解决方案:

原因:这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个软链接到/usr/bin目录下,相当于建立一个链接文件。

首先得知道mysql命令或mysqladmin命令的完整路径,比如mysql的路径是:/usr/local/mysql/bin/mysql

ln -s /usr/local/mysql/bin/mysql* /usr/bin mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

报错2:

200601 15:39:52 mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.

解决:根据提示,只需要在对应的目录下创建报错中指定的文件,即: cd /var/log/ mkdir mariadb cd mariadb/ touch mariadb.log 重新尝试启动服务,该问题解决。

报错3:

200602 19:59:38 mysqld_safe Logging to '/usr/local/mysql/data/pokes01.err'. 200602 19:59:38 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

解决方法:

查看/etc/my.cnf 下的[mysqld]中有没有datadir=/usr/local/mysql/data/ 数据目录的路径,如果没有填上。

然后在进行数据库初始化。即可

初始化数据库之后就可以登录了。mysql5.6以前的版本是没有密码的,直接回车即可登录:

mysql -uroot -p 13、制作服务启动 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

相关的命令:

service mysql start service mysql restart service mysql enable

注意:服务启动有点像Centos6启动服务,但是要记住这里是Centos7

14、密码修改开启远程访问 mysql -u root mysql mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec) mysql> use mysql; mysql> desc user; mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root"; //为root添加远程连接的能力 mysql> update user set Password = password('123456') where User='root'; //设置root用户密码 mysql> select Host,User,Password from user where User='root'; mysql> flush privileges; mysql> exit

报错:

在这里我在开启远程访问之后,还是出现了问题:

用sqlyog登录出现登录被拒绝,提示错误1045问题??

1045 Access denied for user 'root'@'%' (using password:YES)

解决方法:

进入MySQL的安装目录,找到自己的MySQL的my.cnf文件。找到mysqld关键字,下面添加skip-grant-tables。然后保存重启MySQL即可。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有